'''
	Parameters for DeepStack.
'''
import os
import numpy as np

class Parameters():
	def __init__(self):
		# whether to run on GPU
		self.gpu = False
		# the tensor datatype used for storing DeepStack's internal data
		self.dtype = np.float32
		self.int_dtype = np.int16
		# list of pot-scaled bet sizes to use in tree
		self.bet_sizing = np.array([1], dtype=self.dtype)
		# server running the ACPC dealer
		self.acpc_server = "localhost"
		# server port running the ACPC dealer
		self.acpc_server_port = 20000
		# the number of betting rounds in the game
		self.streets_count = 2
		# the directory for data files
		self.data_directory = '../Data/'
		# the size of the game's ante, in chips
		self.ante = 100
		# the size of each player's stack, in chips
		self.stack = 1200
		# the number of iterations that DeepStack runs CFR for
		self.cfr_iters = 1000
		# the number of preliminary CFR iterations which DeepStack doesn't
		# factor into the average strategy (included in cfr_iters)
		self.cfr_skip_iters = 500
		# how many poker situations are solved simultaneously during
		# data generation
		self.gen_batch_size = 1
		# how many poker situations are used in each neural net training batch
		self.train_batch_size = 100
		# path to the solved poker situation data used to train the neural net
		self.data_path = './Data/TrainSamples/PotBet/'
		# path to the neural net model
		self.model_path = './Data/Models/PotBet/'
		# self.final_model_path = os.path.join(self.model_path, 'weights.{epoch:02d}-{val_loss:.2f}.hdf5')
		self.final_model_path = os.path.join(self.model_path, 'weights.final.hdf5')
		# path where to save tf.profiler information
		self.profiler_path = './Data/Models/PotBet/profiler'
		# the neural net architecture
		self.num_layers = 2 # (excluding output layer)
		self.num_neurons = 50
		self.learning_rate = 1e-2
		# how often to save the model during training
		self.save_epoch = 2
		# how many epochs to train for
		self.epoch_count = 10
		# how many solved poker situations are generated
		self.gen_data_count = 3000
		# how many files to create
		# total situations = data_count x num_files
		self.gen_num_files = 1 # problem with range_generator, needs to be 1
		# tf records file information
		self.tfrecords_batch_size = 512




arguments = Parameters()
